"""
STT实现基类
定义STT实现的标准接口
"""

from abc import ABC, abstractmethod
from typing import Tuple, Dict, Any

from src.constants.return_codes import BaseCodeEnum


class STTImplementation(ABC):
    """
    STT实现的抽象基类
    定义所有STT实现必须遵循的接口规范
    """
    
    @abstractmethod
    def speech_to_text(self, audio_file: str, language: str = None, **kwargs) -> Tuple[BaseCodeEnum, Dict[str, Any]]:
        """
        将语音转换为文本
        
        Args:
            audio_file: 音频文件路径
            language: 语言代码，如果为None则自动检测
            **kwargs: 扩展参数
            
        Returns:
            Tuple[int, str, Dict[str, Any]]: (状态码, 识别文本, 结果信息)
            - 状态码: 200表示成功，其他表示错误
            - 识别文本: 转换得到的文本内容
            - 结果信息: 包含转换详情和元数据的字典
        """
        pass
    
    @abstractmethod
    def get_supported_languages(self) -> Dict[str, str]:
        """
        获取支持的语言列表
        
        Returns:
            Dict[str, str]: 语言代码到语言名称的映射
        """
        pass
    
    @abstractmethod
    def get_model_info(self) -> Dict[str, Any]:
        """
        获取模型信息
        
        Returns:
            Dict[str, Any]: 包含模型名称、版本、大小等信息的字典
        """
        pass